iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 25
1
IoT

玩玩 BLE系列 第 25

[Day 25] 晶片間的通訊-SPI

  • 分享至 

  • xImage
  •  

Serial Peripheral Interface,
SPI裝置之間使用四條線來溝通,分別是:

  • Slave Select/ Chip Select
  • Master Input Slave Output
  • Master Output Slave Input
  • Serial Clock
    跟I2C 有點類似,都有一個時脈線,
    I2C 透過從機位址來決定要與哪個裝置進行通訊,而SPI 是使用SS 線來指定從機,
    I2C 使用一條SDA 線來進行資料雙向傳輸,而SPI 則是使用兩條線個別負責兩個方向的資料傳輸。
    除此之外SPI 和I2C 一樣,都可以串接多個裝置,
    多個SPI裝置可以共用同一組 MISO、MOSI和SCLK這三條線,
    串接方式如下圖;(取自維基百科)
    WiKi SPI

SPI 在使用上有兩個參數需要注意,分別是:

  • CPOL(Clock Polarity),代表SCLK 在閒置時的電位
  • CPHA(Clock Phase),代表SCLK 在哪個位置時取值
    CPOL 應該滿容易理解的,電位不是高就是低。
    但CPHA 可能比較令人感到疑惑,這到底是什麼意思?
    我們先假設時鐘線在閒置的時候是低電位,
    所以當我們需要送一個位元(1 bit)的資料時,
    就會先把資料線先準備好,如果我要送1的資料出去,就會把資料線的準位設成高電位,
    接著從時鐘線送出一個方波,送出的過程大概是這樣:
  1. 從閒置的低電位上升到高電位
  2. 維持高電位一段時間
  3. 再從高電位回到低電位
    那我是要以哪個時間為基準呢?
    CPHA就是用來定義這個基準的參數,
    CPHA = 0,就表示資料取值的時間點會落在 1.
    CPHA = 1,就表示資料取值的時間點會落在 3.

所以大家在使用SPI 的時候,
除了腳位的定義外,
也別忘了CPOL 和 CPHA,
第一天連假成功發文了,
中華民國108歲生日快樂。

參考文章:


上一篇
[Day 24] 晶片間的通訊-UART
下一篇
[Day 26] 實作-藍牙溫濕度計(1/2)
系列文
玩玩 BLE27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言